package zhengqc.graph.data_structure;

public interface Graph {
    /* 验证 v 是否为合法的 Vertex */
    void validateVertex(int v);
    /* 是否为有向图 */
    boolean isDirected();
    /* 是否为有权图 */
    boolean isWeighted();
    /* 获取 Vertex 数目 */
    int getV();
    /* 获取 Edge 数目 */
    int getE();
    /* v 与 w 之间是有 Edge */
    boolean hasEdge(int v, int w);
    /* 获取与 v 相连的 Vertex 集合 */
    Iterable<Integer> getAdjacency(int v);
    /* 获取 v 与 w 之间的 Weighted */
    int getWeighted(int v, int w);
    /* 获取 v 的 degree */
    int getDegree(int v);
    /* 获取 v 的 in degree */
    int getInDegree(int v);
    /* 获取 v 的 out degree */
    int getOutDegree(int v);
}
